package com.konglz.consumer.test;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

/**
 * @Description
 * @Author konglz
 * @Data 2023/5/12 1:30
 */
public class ProducerDemo {
    public static void main(String[] args) throws Exception {
        // 1. 创建连接（connection），需要设置相关参数
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        factory.setPort(5672);
        factory.setVirtualHost("/");
        factory.setUsername("admin");
        factory.setPassword("admin");
        Connection connection = factory.newConnection();
        // 2. 创建信道（channel）
        Channel channel = connection.createChannel();
        // 3. 申明队列（queue）
        /**
         * 参数：
         *  第一个参数：队列的名称
         *  第二个参数：队列是否持久化，默认不是持久化（存在内存中） 如果持久化的话，存在磁盘中 true:持久化 false:不持久化
         *  第三个参数：该队列是否共享消息（是否只能被一个消费者消费）true:可以被多个消费者消费 false:不可以
         *  第四个参数：是否自动删除。最后一个消费者断开连接后，是否自动删除该队列。 true:自动删除 false:不自动删除
         *  第五个参数：其它信息（比如可以配置死信队列）
         */
        channel.queueDeclare("hello", true, false, false, null);
        // 4. 发送消息,通过信道发送消息
        String message = "hello world";
        /**
         * 参数：
         *  第一个参数： 交换机的名称（简单模式可以使用默认的交换机）
         *  第二个参数： 路由key,简单模式可以写队列的名称
         *  第三个参数： 其它参数
         *  第四个参数： 需要发送的消息
         */
        channel.basicPublish("", "hello", null, message.getBytes());
        System.out.println("生产者发送消息成功，发送的消息为：" + message);
    }
}
